package com.management.platform;

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.management.platform.handle.JwtFilter;
import java.util.ArrayList;
import java.util.List;
import org.assertj.core.util.Lists;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;

@SpringBootApplication
@MapperScan(basePackages = "com.management.platform.mapper")
public class PlatformApplication {

  public static void main(String[] args) {
    SpringApplication.run(PlatformApplication.class, args);
  }

  /**
   * 注册jwt拦截器
   * @return
   */
  @Bean
  public FilterRegistrationBean jwtFilter() {
    final FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    registrationBean.setFilter(new JwtFilter());
    List<String> urlPatterns = Lists.newArrayList();
    urlPatterns.add("/insert");
    registrationBean.addUrlPatterns(urlPatterns.toArray(new String[urlPatterns.size()]));
    return registrationBean;
  }


  @Bean//使用@Bean注入fastJsonHttpMessageConvert
  public HttpMessageConverters fastJsonHttpMessageConverters(){
    //1.需要定义一个Convert转换消息的对象
    FastJsonHttpMessageConverter fastConverter=new FastJsonHttpMessageConverter();
    //2.添加fastjson的配置信息，比如是否要格式化返回的json数据
//
    FastJsonConfig fastJsonConfig=new FastJsonConfig();
    fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
    //3.在convert中添加配置信息
    fastConverter.setFastJsonConfig(fastJsonConfig);

    HttpMessageConverter converter=fastConverter;
    return new HttpMessageConverters(converter);
  }
}
